package com.gzu.shop.common;

import lombok.Getter;

/**
 * 阿里巴巴Java开发手册-崇山版-2020.08.03 错误码整理
 * 错误码：
 * 1. 五位组成
 * 2. A代表用户端错误
 * 3. B代表当前系统异常
 * 4. C代表第三方服务异常
 * 4. 若无法确定具体错误，选择宏观错误
 * 6. 大的错误类间的步长间距预留100
 */
@Getter
public enum ResultStatus {

    /**
     * 成功
     */
    SUCCESS("00000", "一切 ok"),
    /**
     * 一级宏观错误码
     */
    UNKNOWN_ERROR("A0001", "未知错误"),
    /**
     * 二级宏观错误码
     */
    USER_ERROR_A0100("A0100", "用户注册错误"),
    USER_ERROR_A0110("A0110", "用户名校验失败"),
    USER_ERROR_A0111("A0111", "用户名已存在"),

    USER_ERROR_A0120("A0120", "密码校验失败"),
    USER_ERROR_A0121("A0121", "密码长度不够"),
    USER_ERROR_A0122("A0122", "密码强度不够"),
    USER_ERROR_A0130("A0130", "校验码输入错误"),
    USER_ERROR_A0151("A0151", "手机格式校验失败"),
    USER_ERROR_A0152("A0152", "地址格式校验失败"),

    USER_ERROR_A0200("A0200", "用户登录异常"),
    USER_ERROR_A0201("A0201", "用户账户不存在"),
    USER_ERROR_A0202("A0202", "用户账户被冻结"),
    USER_ERROR_A0203("A0203", "用户账户已作废"),
    USER_ERROR_A0210("A0210", "用户密码错误"),
    USER_ERROR_A0230("A0230", "用户登录已过期"),
    USER_ERROR_A0240("A0240", "用户验证码错误"),


    USER_ERROR_A0400("A0400", "用户请求参数错误"),
    USER_ERROR_A0402("A0402", "无效的用户输入"),
    USER_ERROR_A0410("A0410", "请求必填参数为空"),
    USER_ERROR_A0411("A0411", "用户订单号为空"),
    USER_ERROR_A0412("A0412", "订购数量为空"),
    USER_ERROR_A0413("A0413", "缺少时间戳参数"),
    USER_ERROR_A0414("A0414", "非法的时间戳参数"),
    USER_ERROR_A0420("A0420", "请求参数值超出允许的范围"),
    USER_ERROR_A0421("A0421", "参数格式不匹配"),
    USER_ERROR_A0422("A0422", "地址不在服务范围"),
    USER_ERROR_A0423("A0423", "时间不在服务范围"),
    USER_ERROR_A0424("A0424", "金额超出限制"),
    USER_ERROR_A0425("A0425", "数量超出限制"),
    USER_ERROR_A0426("A0426", "请求批量处理总个数超出限制"),
    USER_ERROR_A0427("A0427", "请求 JSON 解析失败"),

    USER_ERROR_A0440("A0440", "用户操作异常"),
    USER_ERROR_A0441("A0441", "用户支付超时"),
    USER_ERROR_A0442("A0442", "确认订单超时"),
    USER_ERROR_A0443("A0443", "订单已关闭"),

    SERVICE_ERROR_C0300("C0300", "数据库服务出错"),
    SERVICE_ERROR_C0311("C0311", "表不存在"),
    SERVICE_ERROR_C0312("C0312", "列不存在"),
    SERVICE_ERROR_C0321("C0321", "多表关联中存在多个相同名称的列"),
    SERVICE_ERROR_C0331("C0331", "数据库死锁"),
    SERVICE_ERROR_C0341("C0341", "主键冲突");


    private final String code;

    private final String description;

    ResultStatus(String code, String description) {
        this.code = code;
        this.description = description;
    }


}


